home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / lib-tk / SimpleDialog.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  4KB  |  117 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''A simple but flexible modal dialog box.'''
  5. from Tkinter import *
  6.  
  7. class SimpleDialog:
  8.     
  9.     def __init__(self, master, text = '', buttons = [], default = None, cancel = None, title = None, class_ = None):
  10.         if class_:
  11.             self.root = Toplevel(master, class_ = class_)
  12.         else:
  13.             self.root = Toplevel(master)
  14.         if title:
  15.             self.root.title(title)
  16.             self.root.iconname(title)
  17.         
  18.         self.message = Message(self.root, text = text, aspect = 400)
  19.         self.message.pack(expand = 1, fill = BOTH)
  20.         self.frame = Frame(self.root)
  21.         self.frame.pack()
  22.         self.num = default
  23.         self.cancel = cancel
  24.         self.default = default
  25.         self.root.bind('<Return>', self.return_event)
  26.         for num in range(len(buttons)):
  27.             s = buttons[num]
  28.             b = Button(self.frame, text = s, command = (lambda self = self, num = num: self.done(num)))
  29.             if num == default:
  30.                 b.config(relief = RIDGE, borderwidth = 8)
  31.             
  32.             b.pack(side = LEFT, fill = BOTH, expand = 1)
  33.         
  34.         self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window)
  35.         self._set_transient(master)
  36.  
  37.     
  38.     def _set_transient(self, master, relx = 0.5, rely = 0.3):
  39.         widget = self.root
  40.         widget.withdraw()
  41.         widget.transient(master)
  42.         widget.update_idletasks()
  43.         if master.winfo_ismapped():
  44.             m_width = master.winfo_width()
  45.             m_height = master.winfo_height()
  46.             m_x = master.winfo_rootx()
  47.             m_y = master.winfo_rooty()
  48.         else:
  49.             m_width = master.winfo_screenwidth()
  50.             m_height = master.winfo_screenheight()
  51.             m_x = m_y = 0
  52.         w_width = widget.winfo_reqwidth()
  53.         w_height = widget.winfo_reqheight()
  54.         x = m_x + (m_width - w_width) * relx
  55.         y = m_y + (m_height - w_height) * rely
  56.         if x + w_width > master.winfo_screenwidth():
  57.             x = master.winfo_screenwidth() - w_width
  58.         elif x < 0:
  59.             x = 0
  60.         
  61.         if y + w_height > master.winfo_screenheight():
  62.             y = master.winfo_screenheight() - w_height
  63.         elif y < 0:
  64.             y = 0
  65.         
  66.         widget.geometry('+%d+%d' % (x, y))
  67.         widget.deiconify()
  68.  
  69.     
  70.     def go(self):
  71.         self.root.wait_visibility()
  72.         self.root.grab_set()
  73.         self.root.mainloop()
  74.         self.root.destroy()
  75.         return self.num
  76.  
  77.     
  78.     def return_event(self, event):
  79.         if self.default is None:
  80.             self.root.bell()
  81.         else:
  82.             self.done(self.default)
  83.  
  84.     
  85.     def wm_delete_window(self):
  86.         if self.cancel is None:
  87.             self.root.bell()
  88.         else:
  89.             self.done(self.cancel)
  90.  
  91.     
  92.     def done(self, num):
  93.         self.num = num
  94.         self.root.quit()
  95.  
  96.  
  97. if __name__ == '__main__':
  98.     
  99.     def test():
  100.         root = Tk()
  101.         
  102.         def doit(root = root):
  103.             d = SimpleDialog(root, text = 'This is a test dialog.  Would this have been an actual dialog, the buttons below would have been glowing in soft pink light.\nDo you believe this?', buttons = [
  104.                 'Yes',
  105.                 'No',
  106.                 'Cancel'], default = 0, cancel = 2, title = 'Test Dialog')
  107.             print d.go()
  108.  
  109.         t = Button(root, text = 'Test', command = doit)
  110.         t.pack()
  111.         q = Button(root, text = 'Quit', command = t.quit)
  112.         q.pack()
  113.         t.mainloop()
  114.  
  115.     test()
  116.  
  117.